The present invention relates generally to data storage systems, and more particularly to migrating extents between tiers in a multi-tier data storage system.
Modern storage controllers provide a mechanism for managing tiered storage, or storage tiering, which stores different categories of data on different types of storage media. Storage tiers may differ in performance, e.g., in data transfer rate, and cost of the storage media, and data may be categorized by workload, i.e., how often it is accessed. Tiered storage policies generally strive to maintain the most frequently accessed data in the highest performing storage and less frequently accessed data in lower-performance, typically cheaper storage. In addition to cost and performance, other factors, such as data protection and requirements for data recovery, may also be considered. For example, data that is frequently accessed by an application that is sensitive to response time might be stored on one or more solid state drives (SSD). Other data that is infrequently accessed, and for which a longer response time may be acceptable, might be stored on hard disk drives (HDD). However, the cost per gigabyte of storage for SSDs is typically much higher than for HDDs.
A logical volume, also called logical unit number (LUN), is data storage that appears to a user as a single storage device, and which may be accessed using a continuous range of logical block addresses (LBAs), but may actually include multiple physical storage devices of different types. Data on a logical volume is stored as allocation units, or extents, which refers to units of data that are transferred to and from storage devices by storage controllers. An extent may contain one or more grains, which are smaller, configurable units of storage. A grain may be one or more blocks, which are the smallest addressable units of storage on a logical volume, or LUN. While extents may range from higher MBs to lower GBs, grains typically range from few KB s to single digit MBs.